<?php

/***
*
* FILE: /classes/options.php
* DESC: Класс, получающий настройки из БД
* VER: 0.0.1
*
***/

// security check
if (!defined('NDIRECT')) die ('PLEASE DONT DIRECT');

class options {
    
    private $dataBase;
    
    private $options_array;
    
    function __construct() {
        
        global $DB;
        $this->dataBase = &$DB;
        
        $dbquery = 'SELECT * FROM `options` WHERE `autoload` = true';
        
        if (!$this->dataBase->prepQuery($dbquery)) {
            
            if ($query_result = $this->dataBase->runQuery()) {
                
                $options_temp = $this->dataBase->lastQueryAsAssocArray();
                if ($options_temp) {
                    foreach ($options_temp as $num => $currentOption) :
                        $this->options_array[$currentOption['name']] = $currentOption['value'];
                    endforeach;
                }
                
            } else return (false);
            
        } else return (false);
        
    } // __construct
    
    /**
     * @todo Добавить проверку входящих данных
     */
    function getOption ($optName) {
        
        $dbquery = "SELECT value FROM options WHERE name='".$optName."' AND autoload=false LIMIT 1";
        
        if (!$this->dataBase->prepQuery($dbquery)) {
            
            if ($query_result = $this->dataBase->runQuery()) {
                
                $queryResultValue = $this->dataBase->lastQueryAsAssocArray();
                
                if (is_serialized($queryResultValue[0]['value'])) {
                    $queryResultValue = unserialize($queryResultValue[0]['value']);
                } else $queryResultValue = $queryResultValue[0]['value'];
                
                return ($queryResultValue);
                
            } else return (false);
            
        } else return (false);
        
    } // getOption
    
    /**
     * @todo Добавить проверку наличия опции
     * @todo Добавить проверку входящих данных
     */
    function setOption ($optName,$optValue) {
        
        if (is_array($optValue)) {
            $optValue = serialize($optValue);
        }
        
        $dbquery = "INSERT INTO `options` (`name`,`value`,`autoload`) VALUES ('".$optName."', '".$optValue."', false)";
        
        if (!$this->dataBase->prepQuery($dbquery)) {
            
            if ($query_result = $this->dataBase->runQuery()) {
                
                return (true);
                
            } else return (false);
            
        } else return (false);
        
    } // setOption
    
}

?>
